1. Technical Field
The present invention relates generally to the field of computers and computer systems. More particularly, the present invention relates to a computer system and to a method for configuring an application program in a computer system.
2. Description of Related Art
Modern computing systems have become highly sophisticated and complex machines, which are relied upon to perform a huge range of tasks in all our everyday lives. These computer systems comprise a very large number of individual components and sub-systems that must all work together correctly. Thus, creating programs to execute on these systems is a difficult and challenging task. In particular, the application programs that run on these modern computing systems have become increasingly complex and are increasingly difficult to develop. This leads to very lengthy development and deployment cycles and/or leads to errors (e.g. crashes) when the computer systems execute the application programs under a live load and serving real users. It is therefore desired to improve the stability and reliability of such computer systems. Also, it is desired to reduce the workload which is involved in developing new applications to be used by such computer systems.
An application program typically includes a configuration file, which is read by the computer system at the start of execution of the application program. In general terms, the configuration file defines how this application will interact with the various resources provided by the computer system, and defines how the computer system needs to be adapted in order to support the program. That is, the configuration file contains configuration data (often simply called “configuration”) which is used to configure the application to execute on a runtime execution environment provided by this particular computer system. Traditionally, the configuration file is written in a text-based format such as ASCII. More recently, the configuration is written in a markup language such as XML and is usually structured to follow a predetermined schema. Also, the configuration is often distributed among many different parts of the application and may be supplied in several different formats even within the same application. That is, configuration is often diverse and distributed rather than being collected together in one separate configuration file. Also, the complex nature of modern computer systems means that a large volume of configuration is often required.
There have already been some attempts to reduce the need for configuration files. One example is Ruby on Rails, which is a high level object oriented programming language with a web-application framework tailored for developing database-backed web applications. Ruby on Rails forces applications to follow predetermined conventions, such as file naming conventions, that in turn reduce the need for file names to be declared in separate configuration files. Whilst acknowledged as being good practice, such naming conventions have limited applicability and are appropriate mostly in closed environments where the application is produced by a single source or vendor and has minimal dependencies on resources that are supplied by third parties. By contrast, many modern application programs are developed for use in open-ended environments that bring together resources from many different sources and vendors. Thus, configuration is still used by most modern application programs.
The exemplary embodiments have been provided with a view to addressing at least some of the difficulties that are encountered in current computer systems, whether those difficulties have been specifically mentioned above or will otherwise be appreciated by the person of ordinary skill in the art from the discussion herein. At least in some of the following exemplary embodiments, it is desired to provide an improved mechanism for configuring an application program in a computer system.